28 February 2026
Small tools, no roadmap
Craft · 7 min
Everything on my projects page is finished. Not abandoned — finished. Ledger has not had a commit since November and it does not need one. This turns out to be an unusual thing to say out loud, and people react to it the way they react to someone saying they do not own a television.
Finishing as a design constraint
A tool that will never have a version two has to decide what it is on the first day. That constraint does more for the design than any amount of user research, because it removes the escape route. You cannot defer the hard question to the roadmap when there is no roadmap. Either the thing is coherent now or it ships incoherent forever.
Ledger reads a text file and produces an invoice. It does not have accounts, sync, a mobile app or a plan to get them. When someone asks for recurring invoices the answer is a paragraph in the readme explaining how to do that with cron and four lines of shell. That paragraph took an hour. The feature would have taken a fortnight and would have brought a settings screen with it, and settings screens breed.
What it costs
Real things. Nobody will ever pay me for Ledger, and a tool with no roadmap attracts no contributors, because contributing to something finished feels like graffiti. I have made peace with both. The bargain is that I get to keep about nine of these running with roughly a day a month of total maintenance, and each one does its one job for as long as its dependencies hold.
The part I did not expect
Finishing things changed how I work on the unfinished ones. At the office I now catch myself asking what the finished version of a feature looks like — not the next milestone, the last one. Most features have no last one. That is usually a sign that nobody has decided what the feature is, and it is a much cheaper thing to notice in a planning meeting than in month five.
Not every problem gets to be finished. Software that lives in a market has to keep moving. But the assumption that nothing can be finished is a habit, not a fact, and it is worth testing on something small enough that being wrong costs you a weekend.
More writing
- 14 Aug What I stopped measuring Four dashboards, one honest number. Notes
- 2 Jul Ninety milliseconds The gap between being fast and feeling fast. Craft
- 19 May The design system nobody used It had 340 components and no users. Practice
- 3 Apr Reading logs like prose Logs are prose. Almost nobody writes them that way. Notes